//
//  StatusCell.swift
//  微博Swift
//
//  Created by  justinchou on 16/2/29.
//  Copyright © 2016年  justinchou. All rights reserved.
//

import UIKit

class StatusCell: UITableViewCell {

    // MARK: - 公共属性
    var viewModel: StatusViewModel? {
        didSet{
            originalView.viewModel = viewModel
            retweetedView.viewModel = viewModel
            
            
        }
    }
    
    // MARK: - 构造函数
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        setupUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // MARK: - 控件属性
    /// 原创微博视图
    private let originalView: StatusOriginalView = StatusOriginalView()
    /// 转发微博视图
    private let retweetedView: StatusRetweetedView = StatusRetweetedView()
    /// 其它操作工具栏视图
    private let toolView: StatusToolBar = StatusToolBar()
    /// 布局信息
    private let layout = StatusCellViewLayout()

}

// MARK: - 设置cell的界面
extension StatusCell {
    
    func setupUI() {
        
        contentView.addSubview(originalView)
        contentView.addSubview(retweetedView)
        contentView.addSubview(toolView)
        
        originalView.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(contentView).offset(layout.margin)
            make.left.equalTo(contentView)
            make.right.equalTo(contentView)
        }
        
        retweetedView.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(contentView)
            make.right.equalTo(contentView)
            make.top.equalTo(originalView.snp_bottom)
        }
        
        toolView.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(contentView)
            make.right.equalTo(contentView)
            make.height.equalTo(36)
            make.top.equalTo(retweetedView.snp_bottom)
        }
        
        // 4. 设置 contentView 的约束，非常重要
        //运行测试，在控制台会 po 自动布局错误，这个错误的原因是由自动计算行高引起的，在 iOS 开发中，如果 Cell 中存在动态修改约束高度的情况，需要设置 contentView 的约束
        contentView.snp_makeConstraints { (make) -> Void in
            make.left.equalTo(self)
            make.right.equalTo(self)
            make.top.equalTo(self)
            
            make.bottom.equalTo(toolView)
        }
        
        //提升表格显示的性能的方式
        // 1> 异步绘制
        layer.drawsAsynchronously = true
        
        // 2> 栅格化 以下2行代码必须同时写才有效
        layer.shouldRasterize = true
        //分辨率
        layer.rasterizationScale = UIScreen.mainScreen().scale
        
    }
    
}
